/**
 * 播放语音消息的函数。
 *
 * @param {string} msg - 要播放的语音消息文本。
 * @param {function} startCb - 语音播放开始时的回调函数。
 * @param {function} endCb - 语音播放结束时的回调函数。
 * @returns {SpeechSynthesis} 返回语音合成实例。
 *
 * 该函数使用 Web Speech API 的 SpeechSynthesis 接口来播放给定的文本消息。
 * 可以设置语言为中文（简体），并且可以调整音调、语速和音量。
 * 通过回调函数通知调用者语音播放的开始和结束状态。
 */
export function voicePlay (msg, startCb, endCb) {

    // 创建语音合成实例
    let synth = window.speechSynthesis;

    // 定义发音请求
    let utterThis = new SpeechSynthesisUtterance(msg);
    utterThis.lang = 'zh-CN'; // 设置语言为中文
    utterThis.pitch = 1;  // 设置音调（范围：0.5 - 2）
    utterThis.rate = 1; // 设置语速（范围：0.1 - 10）
    utterThis.volume = 1; // 设置音量（范围：0 - 1）

    // 设置发音结束和开始的回调函数
    utterThis.onend = function() {
        // console.log('语音播放结束');
        endCb()
    };
    utterThis.onstart = function() {
        // console.log('语音开始播放');
        startCb()
    };
    // window.speechSynthesis.pause(); // 语音已暂停
    // window.speechSynthesis.resume(); // 恢复语音
    // window.speechSynthesis.cancel(); // 取消语音
    // window.speechSynthesis.speak(utterThis); // 播放语音
    return {
        synth: synth,
        utterThis: utterThis
    }
}